package cn.bonoon.kernel.support.services;

import java.util.List;

import cn.bonoon.kernel.support.entities.Persistable;

/**
 * <pre>
 * 对应的接口父类为：{@link AbstractSearchService}
 * 可分页的接口定义。
 * </pre>
 * <pre>
 * 可选的接口，有些功能需要有分页的接口，有些功能不需要有分页的接口。
 * 如：参数类型的功能，数量比较少，不需要带分页，可直接列出来。
 *     树形功能的，需要树形的接口，不需要分页接口
 * </pre>
 * <pre>
 * V3对接口的修改
 * </pre>
 * @author jackson
 * 
 * @see AbstractSearchService
 * @see ServiceSupport
 */
public interface SearchService<E extends Persistable> extends IService<E>, ISearchable {

	/**
	 * <pre>
	 * 返回所有结果
	 * 不管是树结构还是非树结构，都返回所有的数据
	 * 所以使用该方法返回的数据量比较大，一般不建议使用
	 * </pre>
	 */
	List<E> find();
	
	List<E> find(String where);
	
	/** 注意：只能用于树形结构，其它情况下将返回空集合 */
	List<E> tryLoadChildren(Long rid);
	
	/**
	 * <pre>
	 * 返回整个数结构
	 * 注意：只能用于树形结构，其它情况下将返回空集合
	 * </pre>
	 */
	List<E> tryLoadRoot();
}
